/**
 * 综合实例：数据维护(四合一)
 * 
 * @author XiongChun
 * @since 2010-11-20
 */
Ext.onReady(function() {
	var count="0";
					
				
	//定义一个远程数据源
	var remoteStore1=new Ext.data.Store({
		// 获取数据的方式
		proxy : new Ext.data.HttpProxy({
					url : 'fytjDemo.ered?reqCode=queryPrjAreas'
				}),
		// 数据读取器
		reader : new Ext.data.JsonReader({
					totalProperty : 'TOTALCOUNT', // 记录总数
					root : 'ROOT' // Json中的列表数据根节点
				}, [	
				    	{
							name : 'tp_name'
						}, {
							name : 'tp_cd'
						}
					]),
					baseParams : {
						type : 'all'
					}
	});
	remoteStore1.load();
	
	//定义一个远程数据源
	var remoteStore2=new Ext.data.Store({
		// 获取数据的方式
		proxy : new Ext.data.HttpProxy({
					url : 'fytjDemo.ered?reqCode=queryPrjClasses'
				}),
		// 数据读取器
		reader : new Ext.data.JsonReader({
					totalProperty : 'TOTALCOUNT', // 记录总数
					root : 'ROOT' // Json中的列表数据根节点
				}, [	
				    	{
							name : 'tp_name'
						}, {
							name : 'tp_cd'
						}
					]),
					baseParams : {
						type : 'all'
					}
	});
	remoteStore2.load();
	
	var qForm = new Ext.form.FormPanel({
		region : 'north',
		title : '<span class="commoncss">查询条件<span>',
		collapsible : true,
		border : true,
		labelWidth : 110, // 标签宽度
		// frame : true, //是否渲染表单面板背景色
		labelAlign : 'right', // 标签对齐方式
		bodyStyle : 'padding:3 5 0', // 表单元素和表单面板的边距
		buttonAlign : 'center',
		height : 120,
		items : [{
					layout : 'column',
					border : false,
					items : [{
								columnWidth : .33,
								layout : 'form',
								labelWidth : 80, // 标签宽度
								defaultType : 'textfield',
								border : false,
								items : [{
											fieldLabel : '项目编号',
											name : 'PRJ_NO',
											xtype : 'textfield', // 设置为数字输入框类型
											maxLength:14,
											anchor : '100%'
										}, new Ext.form.ComboBox({
											id :'areTypes',
											hiddenName : 'PRJ_AREA',
											//allowBlank : false, // 是否允许为空
											fieldLabel : '所在区域',
											triggerAction : 'all',
											emptyText : '--请选择区域--',
											store :remoteStore1,
											displayField : 'tp_name',
											valueField : 'tp_cd',
											mode : 'local',
											forceSelection : true, // 选中内容必须为下拉列表的子项
											editable : false,
											typeAhead : true,
											resizable : true,
											anchor : '99%'
										})]
							}, {
								columnWidth : .33,
								layout : 'form',
								labelWidth : 60, // 标签宽度
								defaultType : 'textfield',
								border : false,
								items : [{
											fieldLabel : '项目名称', // 标签
											id : 'PJR_NAME',
											name : 'PRJ_NAME', // name:后台根据此name属性取值
											maxLength : 70, // 可输入的最大文本长度,不区分中英文字符
											anchor : '100%' // 宽度百分比
										}, new Ext.form.ComboBox({
											id :'prjTypes',
											hiddenName : 'PRJ_CLASS',
											//allowBlank : false, // 是否允许为空
											fieldLabel : '项目类型',
											triggerAction : 'all',
											emptyText : '--请选择项目类型--',
											store :remoteStore2,
											displayField : 'tp_name',
											valueField : 'tp_cd',
											mode : 'local',
											forceSelection : true, // 选中内容必须为下拉列表的子项
											editable : false,
											typeAhead : true,
											resizable : true,
											anchor : '99%'
										})]
							}, {
								columnWidth : .33,
								layout : 'form',
								labelWidth : 60, // 标签宽度
								defaultType : 'textfield',
								border : false,
								items : [{
											fieldLabel : '承办单位', // 标签
											name : 'PRJ_UT', // name:后台根据此name属性取值
											maxLength : 70, // 可输入的最大文本长度,不区分中英文字符
											anchor : '100%'// 宽度百分比
										},
										new Ext.form.ComboBox({
											id:'stat',
											hiddenName : 'PRJ_STATUS',
											fieldLabel : '项目状态',
											triggerAction : 'all',
											//allowBlank : false,
											//labelStyle : 'color:blue;',
											emptyText : '请选择',
											store : new Ext.data.SimpleStore({
														fields : ['name', 'code'],
														data : [['策划', '1'],
																['成熟', '2'],
																['在建', '3'],
																['竣工','4'],
																['全部','']]
													}),
											displayField : 'name',
											valueField : 'code',
											mode : 'local',
											forceSelection : false, // 选中内容必须为下拉列表的子项
											editable : false,
											typeAhead : true,
											resizable : true,
											anchor : '100%'
										})]
							}]
				}],
				buttons : [{
							text : '查询',
							iconCls : 'previewIcon',
							handler : function() {
								//调用查询方法！
								queryTheForm();
							}
						},  {
							text : '重置',
							iconCls : 'tbar_synchronizeIcon',
							handler : function() {
								qForm.getForm().reset();
							}
						}]
			});
	Ext.getCmp('areTypes').on('select',function()
			{
					//调用查询方法！
					queryTheForm();
			});
	Ext.getCmp('prjTypes').on('select',function()
			{
					//调用查询方法！
					queryTheForm();
			});
	Ext.getCmp('stat').on('select',function()
			{
					//调用查询方法！
					queryTheForm();
			});
	// 复选框
	var sm = new Ext.grid.CheckboxSelectionModel();
	// 定义自动当前页行号
	var rownum = new Ext.grid.RowNumberer({
				header : 'NO',
				width : 28
			});

	// 定义列模型
	var cm = new Ext.grid.ColumnModel([rownum,sm, {
		header : '项目流水号', // 列标题
		dataIndex : 'prj_sn', // 数据索引:和Store模型对应
		sortable : true
			// 是否可排序
		},
		{
			header:'项目编号',
			dataIndex:'prj_no',
			sortable:true
		},{
		header : '项目名称',
		dataIndex : 'prj_name',
		sortable : true
	},  {
		header : '承办单位',
		dataIndex : 'prj_ut'
	}, {
		header : '项目地块',
		dataIndex : 'prj_massif'
	},
	{
		header : '项目背景',
		dataIndex : 'prj_bg'
	},
	{
		header : '所在区域',
		dataIndex : 'areaname'
	},
	{
		header : '项目类型',
		dataIndex : 'classname'
	},
	{
		header : '区域编号',
		dataIndex : 'prj_area',
		hidden:true
	},
	{
		header : '项目类型编号',
		dataIndex : 'prj_class',
		hidden:true
	},{
		header : '项目状态',
		dataIndex : 'prj_status',
		renderer:function(value)
		{
			var message;
			if(value=='1')
			{
				message="策划";
			}
			else if(value=='2')
			{
				message="成熟";
			}
			else if(value=='3')
			{
				message="在建";
			}
			else 
			{
				message="竣工";
			}
			return message;
		}
	}
	]);

	/**
	 * 数据存储
	 */
	var store = new Ext.data.Store({
				// 获取数据的方式
				proxy : new Ext.data.HttpProxy({
							url : 'fytjDemo.ered?reqCode=querySfxm'
						}),
				reader : new Ext.data.JsonReader({
							totalProperty : 'TOTALCOUNT', // 记录总数
							root : 'ROOT' // Json中的列表数据根节点
						}, [{
									name : 'prj_sn' // Json中的属性Key值
								},  
								{
									name:'prj_no'
								},{
									name : 'prj_name'
								}, {
									name : 'prj_ut'
								}, {
									name : 'prj_massif'
								}, {
									name : 'prj_bg'
								},
								{
									name:'areaname'
								},
								{
									name:'classname'
								}
								,
								{
									name:'prj_area'
								},
								{
									name:'prj_class'
								},{
									name : 'prj_status'
								}])
			});
	
	// 每页显示条数下拉选择框
	var pagesize_combo = new Ext.form.ComboBox({
				name : 'pagesize',
				triggerAction : 'all',
				mode : 'local',
				store : new Ext.data.ArrayStore({
							fields : ['value', 'text'],
							data : [[10, '10条/页'], [20, '20条/页'],
									[50, '50条/页'], [100, '100条/页'],
									[250, '250条/页'], [500, '500条/页']]
						}),
				valueField : 'value',
				displayField : 'text',
				value : '20',
				editable : false,
				width : 85
			});
	var number = parseInt(pagesize_combo.getValue());
	// 改变每页显示条数reload数据
	pagesize_combo.on("select", function(comboBox) {
				bbar.pageSize = parseInt(comboBox.getValue());
				number = parseInt(comboBox.getValue());
				store.reload({
							params : {
								start : 0,
								limit : bbar.pageSize
							}
						});
			});

	// 分页工具栏
	var bbar = new Ext.PagingToolbar({
				pageSize : number,
				store : store,
				displayInfo : true,
				displayMsg : '显示{0}条到{1}条,共{2}条',
				plugins : new Ext.ux.ProgressBarPager(), // 分页进度条
				emptyMsg : "没有符合条件的记录",
				items : ['-', '&nbsp;&nbsp;', pagesize_combo, '-'
				]
			});
	
	//先初始化一次，即默认情况下进入页面就会列出记录！
	store.load({
				params : {
					start : 0,
					limit : bbar.pageSize
				}
			});
	
	
	// 表格工具栏
	var tbar = new Ext.Toolbar({
				items : [{
							text : '统计',
							iconCls : 'addIcon',
							id : 'id_tbi_add',
							handler : function() {
								// 选中根节点
								tree.getRootNode().select();
								var selectModel = tree.getSelectionModel();
								var selectNode = selectModel.getSelectedNode();
								if (Ext.isEmpty(selectNode)) {
									Ext.Msg.alert('提示', '没有选中任何节点!');
								} else {
									selectNode.reload();
								}
								cont="1";
								tizhuan();
							}
						}, '->', {
							text : '刷新',
							iconCls : 'arrow_refreshIcon',
							handler : function() {
								store.reload();
							}
						}]
			});

	

	// 表格实例
	var grid = new Ext.grid.GridPanel({
				// 表格面板标题,默认为粗体，我不喜欢粗体，这里设置样式将其格式为正常字体
				title : '<span class="commoncss">项目基本信息</span>',
				height : 500,
				id : 'id_grid_sfxm',
				autoScroll : true,
				frame : true,
				region : 'center', // 和VIEWPORT布局模型对应，充当center区域布局
				store : store, // 数据存储
				stripeRows : true, // 斑马线
				cm : cm, // 列模型
				sm : sm, // 复选框
				tbar : tbar, // 表格工具栏
				bbar : bbar,// 分页工具栏
				viewConfig : {
	// 不产横向生滚动条, 各列自动扩展自动压缩, 适用于列数比较少的情况
				 forceFit : true
				},
				loadMask : {
					msg : '正在加载表格数据,请稍等...'
				}
			});
	
	
	

	// 布局
	// 如果把form作为center区域的话,其Height属性将失效。
	var viewport = new Ext.Viewport({
				layout : 'border',
				items : [qForm, grid]
			});
	/**
	 * 表单提交(表单自带Ajax提交)
	 */
	function queryTheForm() {
		//提交之前验证数据的有效性！
		if (!qForm.getForm().isValid())
			return;
		//得到表单中提交的数据！
		var params = qForm.getForm().getValues();
		params.start = 0;
		params.limit = bbar.pageSize;
		//重新加载数据
		store.load({
					params : params
				});
	}
	var root = new Ext.tree.AsyncTreeNode({
		id : '010201',
		text : '费用类型',
		expanded : true

	});
// 表格工具栏
var tbar = new Ext.Toolbar({
		items : ['<span class="commoncss">开始时间:</span>',
					new Ext.form.DateField
					({
						id : 'start',
						name : 'start',
						emptyText : '开始时间',
						value:new Date(),
						format : 'Y-m-d', // 日期格式化
						maxLength : 10,
						//允许控件触发键盘事件，其实就是方便可以提交，直接按回车也可以提交！
						enableKeyEvents : true,
						//键盘事件的回调方法！
						listeners : 
						{
							specialkey : function(field, e) 
							{
								if (e.getKey() == Ext.EventObject.ENTER) 
								{
									//如果触发的是回车就直接提交！
									queryMenuItem();
								}
							}
						},
						width : 90
					}),'-','<span class="commoncss">结束时间:</span>',
					new Ext.form.DateField
					({
						id : 'end',
						name : 'end',
						emptyText : '结束时间',
						value:new Date(),
						maxLength : 10,
						//允许控件触发键盘事件，其实就是方便可以提交，直接按回车也可以提交！
						enableKeyEvents : true,
						format : 'Y-m-d', // 日期格式化
						//键盘事件的回调方法！
						listeners : 
						{
							specialkey : function(field, e) 
							{
								if (e.getKey() == Ext.EventObject.ENTER) 
								{
									//如果触发的是回车就直接提交！
									queryMenuItem();
								}
							}
						},
						width : 90
					}),{
					text : '刷新选中节点',
					iconCls : 'tbar_synchronizeIcon',
					handler : function() {
						// 选中根节点
						tree.getRootNode().select();
						var selectModel = tree.getSelectionModel();
						var selectNode = selectModel.getSelectedNode();
						if (Ext.isEmpty(selectNode)) {
							Ext.Msg.alert('提示', '没有选中任何节点!');
						} else {
							selectNode.reload();
						}
					}
				}]
	});

Ext.getCmp("start").on("select",function(comboBox)
		{
			//alert(Ext.getCmp('start').getValue());
		});

// 定义一个树面板
var tree = new Ext.tree.TreePanel({
checkModel: 'cascade',   //对树的级联多选  
onlyLeafCheckable: false,//对树所有结点都可选  
tbar : tbar,
checked : true,
renderTo : 'treeDiv',
loader : new Ext.tree.TreeLoader({
	baseAttrs : {uiProvider: Ext.tree.TreeCheckNodeUI },
	dataUrl : 'fytjDemo.ered?reqCode=queryMoneyTypeTree'
}),
width : 400,
// border: false, //面板边框
useArrows : false, // 箭头节点图标
root : root, // 根节点
height : 500,
autoScroll : true, // 内容溢出时产生滚动条
animate : false
	// 是否动画显示
});
// 选中根节点
tree.getRootNode().select();

// 绑定节点单击事件
tree.on("click", function(node, e) {
		 //Ext.MessageBox.alert('提示', 'ID:' + node.id + " text:" + node.text);
	});

var firstWindow = new Ext.Window({
	layout : 'fit',
	width : 450,
	height : 333,
	resizable : false,
	draggable : true,
	closeAction : 'hide',
	title : '<span class="commoncss">请选择要统计的费用类型：</span>',
	// iconCls : 'page_addIcon',
	modal : true,
	collapsible : true,
	titleCollapse : true,
	maximizable : false,
	buttonAlign : 'right',
	border : false,
	animCollapse : true,
	pageY : 20,
	pageX : document.body.clientWidth / 2 - 420 / 2,
	animateTarget : Ext.getBody(),
	constrain : true,
items : [tree],
buttons : [{
	text : '开始统计',
	id:'startTotal',
	iconCls : 'acceptIcon',
	disabled:true,
	handler : function() 
	{
		if (runMode == '0') 
		{
			Ext.Msg.alert('提示','系统正处于演示模式下运行,您的操作被取消!该模式下只能进行查询操作!');
			return;
		}
		/*//隐藏窗口
		firstWindow.hide();*/
		getTypes();
		document.location=webContext+"/fytj/fytjDemo.ered?reqCode=doubleTongJiInit&prj_sns="+strChecked+"&types="+types+"&startT="+Ext.getCmp('start').value+"&endT="+Ext.getCmp('end').value;
	}
}, 
{
	text : '关闭',
	iconCls : 'deleteIcon',
	handler : function() 
	{
		firstWindow.hide();
	}
}]
});
firstWindow.show(); // 显示窗口
//firstWindow.hide();
	var types=",",strChecked="";
	function tizhuan()
	{
		if (runMode == '0') {
			Ext.Msg.alert('提示', '系统正处于演示模式下运行,您的操作被取消!该模式下只能进行查询操作!');
			return;
		}
		var rows = grid.getSelectionModel().getSelections();
		if (Ext.isEmpty(rows)) {
			Ext.Msg.alert('提示', '请先选中要统计的项目!');
			return;
		}
		//将要删除的附件编号字符串传递过去！
		strChecked = jsArray2JsString(rows, 'prj_sn');
		if(cont=="1")
		{
			Ext.getCmp('startTotal').enable();
		}
		firstWindow.show(); // 显示窗口
	}
	function getTypes()
	{
		// 获取选中节点数组
		var checkedNodes = tree.getChecked();
		if (Ext.isEmpty(checkedNodes)) 
		{
			Ext.Msg.alert('提示', '没有选中任何节点');
			return;
		}
		var strID = '';
		Ext.each(checkedNodes, function(node) {
					strID = strID + node.id + ',';
				});
		types=strID;
	}
});